import { app, BrowserWindow, ipcMain, Menu } from 'electron'
import path from 'path'
const axios = require('axios');

app.whenReady().then(() => {
  // const iconPath = process.platform === 'win32' 
  //   ? path.join(__dirname, 'public/icons/icon.ico') 
  //   : path.join(__dirname, 'public/icons/icon.icns');
  const iconPath = path.join(__dirname, '../../../public/icons/icon.ico');
  const win = new BrowserWindow({
    title: '签字板', // 设置窗口标题
    width: 900,
    height: 700,
    frame: true,
    icon: iconPath,
    webPreferences: {
      preload: path.join(__dirname, '../preload/index.js'),
      contextIsolation: true, // 启用 contextIsolation
      nodeIntegration: false // 建议禁用 nodeIntegration 以提高安全性
    },
  })

  // 禁用默认的菜单栏
  Menu.setApplicationMenu(null);

  // 当使用 win.loadURL 或者 win.loadFile 加载网页时
  // 网页自身的 <title> 标签会覆盖掉你在 BrowserWindow 构造函数里设置的标题
  // 可以在网页加载完成之后, 通过 webContents 事件来动态设置标题
  // 在网页加载完成后设置标题
  // win.webContents.on('did-finish-load', () => {
  //   win.setTitle('签字板');
  // });

  // process.env.VITE_DEV_SERVER_URL 是 vite.config.ts 中配置的 devServer.url
  // 通常是一个本地的 URL 地址, 比如: http://localhost:5173
  // 当处于开发环境时通常是存在的, 当处于生产环境时通常是不存在的
  if (process.env.VITE_DEV_SERVER_URL) {
    win.loadURL(process.env.VITE_DEV_SERVER_URL as string)
    win.webContents.openDevTools()
  } else {
    win.loadFile('dist/index.html')
  }

  // 监听 app-open-time 事件
  ipcMain.on('app-open-time', (event: any, openTime) => {
    console.log('app-open-time: ', new Date(openTime).toLocaleString());
  });

  // 监听来自 preload 脚本的关闭时间消息
  ipcMain.on('app-close-time', (event: any, { openTime, closeTime }) => {
    console.log('app-close-time', event);
    // 使用 axios 发送数据到后台
    axios.post('https://backend-api-url.com/track-time', {
      openTime,
      closeTime
    })
      .then((res: any) => {
        console.log('Time data sent successfully:', res.data);
      })
      .catch((error: any) => {
        console.error('Error sending time data:', error);
      });
  });
})